Sequential codecs are commonly used in digital data communication systems that employ systematic convolutional codes to permit correction of errors that occur in the course of a transmission. For this purpose, at the transmit end of the link the encoding portion of the codec periodically inserts error correction (parity) bits into a stream of data bits to be transmitted based upon some prescribed encoding algorithm (and code rate). Typical convolutional code rates are 1/2 (1 parity bit inserted for each data bit), 3/4 (1 parity bit inserted for every three data bits) and 7/8 (1 parity bit inserted for every seven data bits. At the receive end of the link, the decoding portion of the codec attempts to reconstruct the original data stream using the additional information provided by the parity bits to correct for errors in the received data.
The algorithm that is used to generate the parity bits (encode) typically involves a scheme that is mathematically equivalent to convolution of the data sequence with a set of code generator polynomials, wherein selected ones of a sequence of bits are combined in accordance with a prescribed generator polynomial using an exclusive-OR logic circuit
In the course of correcting for errors and recovering the data at the receive end of the link, polynomial convolution is used in a syndrome generator wherein received parity bits are combined with a locally generated parity bit sequence to control the (branch selection) operation of the error correction processor. Because the error correction scheme typically employs a trial and error (Fano) processing algorithm whose next action depends on the result of the previous trial, conventional sequential codec error correction processing schemes typically execute all branch metric processing in serial fashion within a single decoder cycle, so that the error recovery processing speed is directly impacted by the data rate.